home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.extensibility.util.Debug;
- import com.extensibility.util.FilteredEnumerator;
- import com.extensibility.util.StringUtilities;
- import com.extensibility.util.XASet;
- import java.util.Enumeration;
- import java.util.Vector;
-
- public class InternalPEDeclaration extends ParameterEntityDeclaration implements AttributeDeclaration.Owner, ContentModelOwner {
- static final Enumeration emptyEnumeration = new 1();
- AttributeGroup attributeGroup;
- ContentModel contentGroup;
- Vector modelsUsed = new Vector();
- Vector modelUsedBy = new Vector();
- boolean changeLock = false;
- InternalPEDChangeListener declChange = new InternalPEDChangeListener(this);
-
- public InternalPEDeclaration(String var1, Class var2) {
- super(var1, "");
- if (var2 == Class.forName("com.extensibility.xml.AttributeGroup")) {
- this.setAttributes(new AttributeGroup(this));
- } else if (var2 == Class.forName("com.extensibility.xml.ContentModelTerm")) {
- this.createContentModel();
- } else {
- Debug.assert(false, "Unknown class");
- }
-
- }
-
- public InternalPEDeclaration(String var1, String var2) {
- super(var1, var2);
- }
-
- public void setValue(String var1) {
- String var2 = super.value;
- super.setValue(var1);
- if ((var2 == null || var2.equals("")) && !var1.equals("")) {
- this.tryMakingReusable(((BaseDeclaration)this).getSchema());
- }
-
- }
-
- public void tryMakingReusable(SchemaIntf var1) {
- }
-
- protected void releaseBindings() {
- if (this.contentGroup != null) {
- this.contentGroup.visitTerms(new 2(this), false);
- }
-
- }
-
- protected void establishBindings() {
- if (this.contentGroup != null) {
- this.contentGroup.visitTerms(new 3(this), false);
- }
-
- }
-
- public void add(AttributeGroupMember var1) {
- if (this.attributeGroup.add(var1)) {
- this.updateValue();
- var1.addChangeListener(this.declChange);
- ((BaseDeclaration)this).fireChangeEvent(33, var1);
- }
-
- }
-
- public void addDependantsToSet(XASet var1) {
- Enumeration var2 = this.getOwnedAttributes();
-
- while(var2.hasMoreElements()) {
- var1.addToSet(var2.nextElement());
- }
-
- }
-
- public BaseDeclaration asDecl() {
- return this;
- }
-
- public Object clone() {
- InternalPEDeclaration var1 = (InternalPEDeclaration)super.clone();
- if (var1.attributeGroup != null) {
- var1.attributeGroup = (AttributeGroup)var1.attributeGroup.clone(var1);
- var1.attributeGroup.setOwner(var1);
- }
-
- if (var1.contentGroup != null) {
- var1.contentGroup = (ContentModel)var1.contentGroup.clone(var1);
- }
-
- return var1;
- }
-
- public BaseDeclaration clone(SchemaIntf var1, SchemaIntf var2, URI var3) {
- InternalPEDeclaration var4 = (InternalPEDeclaration)super.clone();
- if (var4.attributeGroup != null) {
- var4.attributeGroup = (AttributeGroup)var4.attributeGroup.clone(var4, var1, var2);
- var4.attributeGroup.setOwner(var4);
- }
-
- if (var4.contentGroup != null) {
- var4.contentGroup = (ContentModel)var4.contentGroup.clone(var4, var1, var2);
- }
-
- ((BaseDeclaration)var4).setURI(var3);
- return var4;
- }
-
- public AttributeGroup getAttributeGroup() {
- return this.attributeGroup;
- }
-
- public AttributeGroupMember getAttributeOrGroup(String var1) {
- return this.attributeGroup.getAttributeOrGroup(var1);
- }
-
- public String getAttributesAsString(boolean var1) {
- return this.attributeGroup == null ? "" : this.attributeGroup.getAttributesAsString(var1);
- }
-
- public String getClassName() {
- return "com.extensibility.xml.InternalPEDeclaration";
- }
-
- public ContentModel getContentModel() {
- return this.contentGroup;
- }
-
- public boolean getMayBeAttrGroup() {
- return this.attributeGroup != null || this.contentGroup == null;
- }
-
- public boolean getMayBeModelGroup() {
- return this.contentGroup != null || this.attributeGroup == null;
- }
-
- public Enumeration getOwnedAttributes() {
- AttributeGroup var1 = this.getAttributeGroup();
- return (Enumeration)(var1 == null ? emptyEnumeration : new FilteredEnumerator(var1.getAttributes(false), Class.forName("com.extensibility.xml.AttributeDeclaration")));
- }
-
- public String getSource() {
- StringBuffer var1 = new StringBuffer(String.valueOf(String.valueOf(String.valueOf("<!ENTITY ").concat(String.valueOf(this.isPE() ? "% " : ""))).concat(String.valueOf(super.name))).concat(String.valueOf(" ")));
- int var2 = var1.length() + 1;
- var1.append(DTDUtilities.convertPEReferences(StringUtilities.doubleQuoted(super.value), true));
- var1.append(String.valueOf(">").concat(String.valueOf(BaseDeclaration.LINE_SEPARATOR)));
- return var1.toString();
- }
-
- public boolean isPE() {
- return true;
- }
-
- public boolean isSubordinate(BaseDeclaration var1) {
- return var1 instanceof AttributeDeclaration && ((AttributeDeclaration)var1).getOwner() == this;
- }
-
- public boolean mayBeConstraint() {
- if (this.contentGroup != null) {
- return false;
- } else if (this.attributeGroup != null) {
- return false;
- } else {
- boolean var1 = false;
-
- for(int var2 = 0; var2 < super.value.length(); ++var2) {
- char var3 = super.value.charAt(var2);
- if (!DTDParser.isWhiteChar(var3) && !DTDParser.isNameChar(var3)) {
- if (var3 != '|') {
- return false;
- }
-
- var1 = true;
- }
- }
-
- return var1;
- }
- }
-
- public boolean mayBeText() {
- if (this.contentGroup != null) {
- return false;
- } else {
- return this.attributeGroup == null;
- }
- }
-
- public void modelStateChanged(ContentModelTerm var1, int var2, Object var3) {
- for(int var4 = 0; var4 < this.modelUsedBy.size(); ++var4) {
- if (this.modelUsedBy.elementAt(var4) != this) {
- ((ContentModelOwner)this.modelUsedBy.elementAt(var4)).modelStateChanged(var1, var2, var3);
- }
- }
-
- }
-
- public boolean references(InternalPEDeclaration var1) {
- if (var1 == this) {
- return false;
- } else if (this.getAttributeGroup() != null) {
- return this.attributeGroup.contains(var1.getAttributeGroup());
- } else if (this.contentGroup != null) {
- return this.modelsUsed.indexOf(var1) >= 0;
- } else {
- return super.references(var1);
- }
- }
-
- public void remove(AttributeGroupMember var1) {
- this.attributeGroup.remove(var1);
- this.updateValue();
- var1.removeChangeListener(this.declChange);
- ((BaseDeclaration)this).fireChangeEvent(32, var1);
- }
-
- public void setAttributes(AttributeGroup var1) {
- Debug.assert(this.attributeGroup == null, "may ony be set when null");
- this.attributeGroup = var1;
- var1.setOwner(this);
- }
-
- public void clearAttributes() {
- this.attributeGroup = null;
- }
-
- public ContentModel createContentModel() {
- this.contentGroup = new ContentModel(this);
- return this.contentGroup;
- }
-
- public void clearContentModel() {
- this.contentGroup = null;
- }
-
- public String toString() {
- return this.getSource();
- }
-
- public void unusedByNotify(ContentModelOwner var1) {
- this.modelUsedBy.removeElement(var1);
- }
-
- public void unuseNotify(ContentModelOwner var1) {
- if (!this.modelsUsed.removeElement(var1)) {
- Debug.assert(false, "removing a model that didn't exist");
- }
-
- }
-
- public Vector updateAttributes(Vector var1) {
- Vector var2 = this.attributeGroup.updateContents(var1);
- ((BaseDeclaration)this).fireChangeEvent(45, (Object)null);
- return var2;
- }
-
- public void updateValue() {
- if (this.contentGroup != null) {
- super.value = this.contentGroup.getSource(true);
- ((BaseDeclaration)this).fireChangeEvent(43, this.contentGroup);
- } else if (this.attributeGroup != null) {
- super.value = this.attributeGroup.getSource(1);
- ((BaseDeclaration)this).fireChangeEvent(44, this.attributeGroup);
- } else {
- Debug.assert(false, "can only update value when cm or attrs are non-null");
- }
-
- }
-
- public void usedByNotify(ContentModelOwner var1) {
- if (var1 == this) {
- Debug.trace("adding self!");
- } else {
- this.modelUsedBy.addElement(var1);
- }
-
- }
-
- public void useNotify(ContentModelOwner var1) {
- this.modelsUsed.addElement(var1);
- }
- }
-